Feature Flag
#wip
Feature Toggle
小出しに新機能追加追加していく
リリースの時点で全ての新機能を、無効化している状態で本番環境に入れる
Feature Toggleを使って、flagを切り替えることで、その新機能を利用できる状態にする
トランクベース開発ってこの文脈かmrsekut.icon
リニューアル用と、masterのbranchを変えずに、全部masterに突っ込もう
GPT-4.icon
Feature Toggle(フィーチャートグル)とは、ソフトウェア内の特定の機能を「有効/無効」に切り替える仕組みのことです。
これにより、デプロイ(本番環境へのコード反映)とリリース(ユーザーへの機能提供)を分離でき、段階的な機能展開やA/Bテスト、障害時の即時切り戻しなどが可能になります。
---
✅ Feature Toggle の代表的な種類とその特徴
1. Release Toggles(リリーストグル)
目的:新機能の段階的な公開や、未完成の機能のコードを安全に本番環境に含めること。
利用シーン:
デプロイはしたいが、全ユーザーにすぐには見せたくない機能があるとき。
フラグで「新UI」「旧UI」を出し分けるといった段階移行。
一時的:機能が安定して全体に公開されたら、トグルは削除されるべき。
---
2. Experiment Toggles(実験トグル)
目的:A/Bテストや機能の仮説検証のために使う。
利用シーン:
機能AとB、どちらがCVRが高いかを調べる。
デザインや文言を比較してユーザー行動を見る。
一時的:実験が終わったら結果に基づいて一方を採用・他方を削除する。
---
3. Operational Toggles(運用トグル)
目的:システムの安定運用や、負荷制御のため。
利用シーン:
バックグラウンド処理の一時停止(例:バッチ処理を止めたい)。
外部APIが不安定なときに、その機能だけ無効にする。
一時的:運用上の判断で有効・無効を即時に切り替えるが、長期的な運用用途には向かない。
---
4. Kill Switch(キルスイッチ)
目的:機能の緊急停止用のトグル。
利用シーン:
リリースした機能にクリティカルなバグがあった。
セキュリティ問題などで即座に止めたい。
特性:常に備えておき、緊急時に即時オフにできるよう設計される。
一時的 or 永続的:一時的であることが多いが、設計上残すこともある。
---
5. Permission Toggles(パーミッショントグル)
目的:特定のユーザーグループやロールにのみ機能を有効化する。
利用シーン:
社内スタッフだけが使える機能。
プレミアムユーザーだけが使える限定機能。
永続的であることが多い:リリース後もユーザー層ごとの制御が続く。
---
補足:トグルの管理における注意点
トグルが増えすぎるとコードの複雑化や技術的負債の原因になるので、期限を決めて削除することが重要です。
代表的なツール・サービスとしては LaunchDarkly や Unleash などがあります。
https://cabi99.hatenablog.com/entry/2019/10/21/144441
https://kakakakakku.hatenablog.com/entry/2022/02/01/102104
https://docs.getunleash.io/reference/feature-toggles#feature-flag-types
https://blog.studysapuri.jp/entry/2020/01/14/080000
https://zenn.dev/kyoncy/articles/18da09f64dbc0d
https://techblog.gaudiy.com/entry/2021/12/08/135920
https://blog.torut.tokyo/entry/2022/05/03/172348
https://codezine.jp/article/detail/14114
https://qiita.com/TsuyoshiUshio@github/items/51c6662cd45bded95389
https://blog.sushi.money/entry/2018/09/04/113921
https://ubiteku.oinker.me/2015/10/27/フィーチャーブランチ/
https://kakakakakku.hatenablog.com/entry/2022/02/01/102104
4種類ある
Release Toggles(リリーストグル)
Experiment Toggles(実験トグル)
Operational Toggles(運用トグル)
Permission Toggles(許可トグル)
https://blog.torut.tokyo/entry/2022/05/03/172348